import pandas as pd
import MeCab
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font',family='NanumSquare.otf')
import seaborn as sns
from IPython.display import set_matplotlib_formats
set_matplotlib_formats('retina')
df = pd.read_excel("data/boxplot_original.xlsx", index_col=0)
df.head()
| site | hotel | score | review | date | star | length | review_spell_check | |
|---|---|---|---|---|---|---|---|---|
| Unnamed: 0 | ||||||||
| 0 | 아고다 | 그랜드 워커힐 서울 | 8.4 | 쉬기 좋은 도심속 별장느낌의 호텔이었어요다만 체크인하는 직원들 사무적인 태도가 조금... | NaN | NaN | 56 | 쉬기 좋은 도심 속 별장 느낌의 호텔이었어요 다만 체크인하는 직원들 사무적인 태도가... |
| 1 | 아고다 | 그랜드 워커힐 서울 | 8.4 | 룸컨디션 좋아요 깔끔해요 셔틀이 있어서 자가용 없이도 이용하기 편했어요 조식이 약... | NaN | NaN | 65 | 룸 컨디션 좋아요 깔끔해요 셔틀이 있어서 자가용 없이도 이용하기 편했어요 조식이 ... |
| 2 | 아고다 | 그랜드 워커힐 서울 | 2.0 | 좀 낡았어요 | NaN | NaN | 6 | 좀 낡았어요 |
| 3 | 아고다 | 그랜드 워커힐 서울 | 8.8 | 수영장 개장하는 날 갔는데 전반적으로 만족합니다 다만 수영장 이용하실 분들은 선배드... | NaN | NaN | 98 | 수영장 개장하는 날 갔는데 전반적으로 만족합니다 다만 수영장 이용하실 분들은 선배들... |
| 4 | 아고다 | 그랜드 워커힐 서울 | 10.0 | 부모님 환갑으로 예약해드렸는데 매우 만족하셨습니다 | NaN | NaN | 27 | 부모님 환갑으로 예약해드렸는데 매우 만족하셨습니다 |
stop_words = ['나','여기','무엇','그것','가','긋','가본','제','저','저희','그거','브','우리','그','큐티','쏘','슈','어디','뭐','자기','놀자','이곳','임','요방','너','그곳','거기','니티','노','이쪽','저기','호텔','곳','점','앞','시','원분','스로','도','대','플','기','그제','넥','딩','놀']
#stop_words = []
len(stop_words)
def getNVM_lemma(text):
tokenizer = MeCab.Tagger()
parsed = tokenizer.parse(text)
#print(parsed)
word_tag = [w for w in parsed.split("\n")]
pos = []
tags = ["NNG", "NNP","VV","VA","VCP",'VCN','XR']
for word_ in word_tag[:-2]:
word = word_.split('\t') #['아버지', 'NNG,*,F,아버지,*,*,*,*']
tag = word[1].split(",") #['EC', '*', 'F', '는다', '*', '*', '*', '*']
if('+' in tag[0]): #단어가 여러 형태소로 구성된 경우
if ('VV' in tag[0] or 'VA' in tag[0] or 'VX' in tag[0]):
t = tag[-1].split('/')[0]
if t not in stop_words:
pos.append(t)
elif ((tag[0] in tags) and (word[0] not in stop_words)):
pos.append(word[0])
return pos
import plotly.express as px
fig = px.box(df, x="hotel", y="length", color="site")
fig.update_traces(quartilemethod="exclusive") # or "inclusive", or "linear" by default
fig.show()
